softwarefandomcom_de-20200213-history
Appserver.io
appserver.io ist die Implementierung eines Anwendungsservers für das PHP basierte Web-Umfeld und soll eine Brücke zwischen dem Anwendungsserver-Konzept und klassischen Webservern wie z.B. Apache schlagen. Hintergrund soll es sein, eine Plattform zu entwickeln die Enterprise Anwendungen in PHP ermöglicht und unterstützt. Um dies zu erreichen besteht die Software aus einer Middleware welche das Ausliefern klassischer PHP Anwendungen unterstützt und um zusätzliche Webdienste erweitert wird. Geschichte Die grundlegende Idee ein WildFly Equivalent für PHP zu entwickeln bestand innerhalb der Firma TechDivision schon seit einigen Jahren. Aufgrund mangelnder technischer Unterstützung durch die Zielsprache PHP konnte mit der Entwicklung jedoch erst im Juli 2013 effektiv begonnen werden. Seit längerem existieren asynchrone Event gestützte Ansätze, durch die sich eine nicht-blockierende Middleware auf Socketbasis in PHP implementieren lässtReactPHP Projekt-Website. Parallel dazu gibt es seit August 2012 durch die PECL Bibliothek pthreads von Joe Watkins die Option von echtem POSIX kompatiblem Multithreadingpthreads Projekt-Homepage. Auch wenn dieses kontrovers diskutiert wirdBenjamin Erb, Concurrent Programming for Scalable Web Architectures wurden zur Implementierung Threads genutzt, da sie Programmierern eine gezieltere Nutzung von Hardware erlauben, als es durch die Nutzung einer gewöhnlichen Laufzeitumgebung möglich ist. Nach Festlegung einer geeigneten technischen Basis startete die Entwicklung von appserver.io auf der Plattform GitHub. Derzeit (Stand Januar 2015) besteht das Projekt aus 36 separaten Repositories, circa 74.000 Lines of Code und einen geschätzten Aufwand von 18 Jahren (COCOMO Modell)OpenHUB appserver.io Projektseite. Lizenzierung appserver.io ist freie Software unter der OSL in Version 3.0 und kann als installierbare Anwendung von der Projektseite, oder als Quelltext kostenlos über das GitHub Portal heruntergeladen werden. Das Projekt plant einen Freemium Ansatz bei dem die Anwendung in eine Community-''' und eine '''Enterprise Edition mit zusätzlichen Möglichkeiten geteilt wird. Eigenschaften und Funktionen appserver.io beinhaltet eine eigene Laufzeitumgebung. Diese enthält PHP in Version 5.5 erweitert um einige Drittanbieterbibliotheken, Erweiterungen und DienstprogrammenAbhängigkeiten der appserver.io Laufzeitumgebung. Diese Idee einer komplett beinhalteten Umgebung macht appserver.io zu einer leicht installierbaren und umfassenden PHP Laufzeitumgebung, hat allerdings Nachteile durch die spezifische Zusammenstellung ihrer Komponenten. Vor allem die Nutzung von Multithreading wird in der PHP Community kritisch betrachtet, da es als Bruch des in PHP adaptierten shared nothing Prinzips gilt und Zwischen-Request Kommunikation auf Objektebene erlaubtMultithreading in PHP with pthreads. Zusätzlich zur enthaltenen Laufzeitumgebung versucht das Projekt die Administration zu erleichtern. Zu diesem Zweck wird ein Administrations-Backend zur Verfügung gestellt, das in der Lage ist sowohl die Komponenten der Middleware als auch die Verteilung und Stati von Anwendungen zu überwachen. Ab Version 0.6.0 ist die Anwendungsverwaltung voll implementiert und erlaubt einfache Drag and drop Installation von Anwendungen. Zusätzliche Funktionen wie die Verwaltung von virtuellen Hosts, Logging und erweiterte Clustering- und Statistik-Verwaltung ist für die nahe Zukunft geplant. Neben den klassischen auf Requestebene isolierten PHP Anwendungen erlaubt appserver.io auch die Nutzung von PHP-Servlets, Objektinstanzen, welche zwischen Anfragen persistent bleiben. Mit diesen ist es theoretisch möglich, bedeutende Geschwindigkeitsvorteile zu erreichen da das Bootstrapping der Anwendung nur einmal ausgeführt werden muss. Wie sein Java Vorbild WildFly bietet auch appserver.io verschiedene Dienste die sich individuell durch interne und externe Anwendungen nutzen lassen. Diese sind auf modulare Art und Weise eingebunden und bilden ein zentrales Konzept eines Anwendungsservers. Im Folgenden ist eine Liste von Diensten und Eigenschaften aufgeführt, die eine appserver.io Installation bereitstellt, wobei sich die meisten auch unabhängig vom appserver Projekt nutzen lassen. * Webserver * Persistence Container * Message Queue * Servlet Engine * Design by Contract Unterstützung * Deployment API * Integrierter FastCGI Client * AOP Unterstützung * Dependency Injection Unterstützung * Timer Service * Deployment API * Enterprise Beans nach dem Vorbild vonEnterprise Java Beans Wie bereits beschrieben bietet das Projekt spezielle Enterprise Funktionen, für die ein Bezahlmodell existiert. Diese sind wie folgt: * Cluster Unterstützung * Eine Anwendungs-Firewall * Schnappschüsse von installierten Anwendungen * Hot Backup * Lastverteilung Versionsübersicht appserver.io befindet sich derzeit noch in einer frühen Entwicklungsphase, trotzdem stellen die Entwickler bereits stabile Vorabversionen über das GitHub Portal zur Verfügung. Eine Liste der so bereits erschienen Versionen ist wie folgt: appserver.io Beta Zusätzlich sind fortlaufende Entwicklerversionen über die Homepage des Projektes verfügbar. Erreichte Meilensteine Das Projekt hat derzeit zwei große Meilensteine zu verzeichnen: * Mit Version 0.5.8 bietet appserver.io eine geführte Windows Installation, sowie volle Unterstützung dieses Betriebssystems ab Version 7 * Ab Version 0.6.0 bietet der integrierte Webserver und der modulare Aufbau Kompatibilität zu Nicht-Servlet-Anwendungen * Ab Version 0.10.0 laufen Anwendungen in separierten Kontexten, was sie komplett von einander unabhängig macht * Ab Version 0.10.0 sind Enterprise Beans nach dem Vorbild von Enterprise Java Beans integriert Literatur * Meyen, Sebastian (2013): Software Development Trends. Frankfurt am Main: entwickler.press. S. 25-49. * Piech, Guido (2014): Onlineplattform für den Einzelhandel. Das digitale Schaufenster ist erröffnet. In: IT MITTELSTAND, Ausgabe 1-2 (2014), S. 54-64. Referenzen * PHP Magazin: PHP Application Server auf Basis von phtreads * PHP Magazin: Asynchronous I/O in PHP, oder doch lieber Threads? * PHP Magazin: Java EE macht’s vor: Application Server für PHP * Sitepoint: An Interview with the Appserver.io Crew * dev-metal: Postmodern PHP – appserver.io, a multithreaded application server for PHP, written in PHP * SitePoint PHP Blog: An Interview with the Appserver.io Crew Weblinks * www.appserver.io – appserver.io Projektseite * www.github.com – GitHub Projektseite * www.appserver.io - Downloads finaler Versionen * www.appserver.io - Downloads fortlaufender Entwicklerversionen Einzelnachweise Kategorie:Freie Server-Software Kategorie:Php-Programm Kategorie:Middleware